1. Field of the Invention
This invention relates to the client/server computing environment, and particularly to caching of content provided to users in a client/server computing environment.
2. Description of the Related Art
As more users begin to take advantage of businesses which use the Internet and the World Wide Web (the “web”) to describe, market, sell, and deliver products and services, the performance of business web sites becomes an issue of greater importance.
Web documents, or web pages, are stored on numerous server computer systems (“servers”) that are connected to the Internet. Each document on the web has a distinct universal resource locator (URL) which indicates where the document is located (e.g., the Internet domain name of the site on which the server is running, and the location on the server including file or directory specification) and how to access it (e.g., the protocol used when accessing the server containing the document). URLs can also include query strings so as to pass additional information to the Internet resource.
Many of the documents stored on web servers are written in one of several standard document description or markup languages such as Hypertext Markup Language (HTML) or Extensible Markup Language (XML). Using a markup language, a designer of web documents can associate hypertext links or annotations with specific words or phrases in a document and specify visual aspects and the content of a web page. The hypertext links identify the URLs of other web documents or other parts of the same document providing information related to the words or phrases. Information within web documents and available for delivery in response to a user's request is generally referred to as “content” and can take a variety of forms including text, graphics, audio, video, and others.
A user accesses documents stored on the web using a web browser (a computer program designed to display markup language documents and communicate with web servers) running on a client computer system connected to the Internet. Typically, this is done by the user selecting a hypertext link (typically displayed by the web browser as a highlighted word or phrase) within a document being viewed with the web browser. The web browser then issues a hypertext transfer protocol (HTTP) request for the requested document to the web server identified by the requested document's URL. In response, the designated web server returns the requested document to the web browser, also using the HTTP.
When the content of web pages is relatively static, i.e., it does not change frequently, or require frequent updates, web site performance depends primarily upon the web site's ability to serve requested documents to users. Serving documents requires relatively little in the way of server computer system processing resources, and can be scaled to accommodate increasing numbers of users with relative ease. One technique to make delivery of static documents more efficient is to implement a web cache. A web cache can improve the response time to a particular user's request by storing a copy of the requested document on at least one alternate web site, one that is preferably closer to, or more accessible by, the user. Again, such systems work well when the documents are relatively static.
However, as web site content becomes more sophisticated, it becomes more difficult to maintain high levels of performance. For example, if a user is configuring a product to be purchased from a business's web site, it is often desirable for the content of the web pages to be dynamic. If, on an opening web page, the user selects several product options, a subsequent web page can be very different, depending upon the options selected. To accommodate this kind of flexibility, many web pages (e.g., the aforementioned subsequent web page) are only created by applications running on or in conjunction with the web server computer system after a user has made a specific request. Such dynamic content production can be very computation intensive, and thus it can have a significant effect on server performance. Moreover, traditional web page caching systems are ineffective when the web page content is dynamic.
Accordingly, it is desirable to have a dynamic web content caching framework that allows for the caching and reuse of dynamically created documents in an efficient manner, thereby reducing the amount of computation required by web and/or application servers.